/**
 * describe:
 *
 * @author chaP
 * @date 2018/12/25
 */
package CodingTest;

import java.util.*;

/**给定一个只包括 '('，')'，'{'，'}'，'['，']' 的字符串，判断字符串是否有效。

        有效字符串需满足：

        左括号必须用相同类型的右括号闭合。
        左括号必须以正确的顺序闭合。
        注意空字符串可被认为是有效字符串。

        示例 1:

        输入: "()"
        输出: true
        示例 2:

        输入: "()[]{}"
        输出: true
 这题在leetcode编译有问题 尝试多种测试用例之后通过 但就是编程不通过 不知为何  以后研究一下
 **/
public class vaildExpression {
    public boolean isVaild(String s){
        Stack<Character> stack = new Stack<Character>();
    for(int i = 0;i<s.length();i++){
        if(s.charAt(i) == '('){
            stack.push(')');}
        else if(s.charAt(i) == '{')
        {stack.push('}');
        }else if(s.charAt(i) == '['){
            stack.push(']');
        }else if(s.charAt(i) == ' '){
            continue;
        }else {
            if(s.charAt(i) != stack.pop() ){
                return false;
            }else{
                continue;
            }
        }
    }if(!stack.isEmpty())
        {return false;
        }else {
        return true;
        }

 }
 public static void main(String[] args){
        String s = "(((((((()";
        vaildExpression v = new vaildExpression();
        boolean h = v.isVaild(s);
        System.out.print(h);
 }
}
